#ifndef __SYSCALL_H__
#define __SYSCALL_H__
#include "kernel/interrupt/interrupt.h"

#define KERNEL_CS 	(0x08)
#define	KERNEL_DS 	(0x10)

#define	USER_CS		(0x28)
#define USER_DS		(0x30)

#define MAX_SYSTEM_CALL_NR 128



typedef uint64_t (*system_call_t)(StackFrame* regs);


class systemcallmanager
{
private:
    /* data */
    

public:

    system_call_t system_call_table[MAX_SYSTEM_CALL_NR];

    static systemcallmanager* systemcallm;
    systemcallmanager(/* args */);
    ~systemcallmanager();
    static uint64_t HandleSystemCall(StackFrame*);
};



#define SYSCALLMANAGER \
systemcallmanager::systemcallm


#endif